package XZK010202;

import java.math.BigDecimal;

/**
 * 面向对象进阶训练
 *
 * @author bing.z 2021/5/28 16:21
 **/
public class Demo {
    public static void main(String[] args) {
        /**
         * 1、 编写一个类 Book，代表图书:
         * 具有属性： 名称（title）、页数（pageNum），其中页数不能
         * 少于 200 页，否则输出错误信息，并赋予默认值 200。
         * 具有方法: 为各属性设置赋值和取值方法。 detail，用来在控制
         * 台输出每本图书的名称和页数
         * 编写测试类 BookTest 进行测试：为 Book 对象的属性赋予初始
         * 值，并调用 Book 对象的 detail 方法，看看输出是否正确
         */
        Book book = new Book();
        book.setTitle("西厢记");
        book.setPageNum(199);
        book.detail();

        /**
         * 2. 通过类描述开课吧的 Java 学员。
         * 具有属性： 姓名，年龄，性别，爱好，公司（都是：开课吧），
         * 学科（都是：Java 学科）。
         * 思考：请结合 static 修饰属性进行更好的类设计。
         */
        Student s1 = new Student("A", 18, 1, "篮球");
        System.out.println(s1);

        /**
         * 3. 通过类描述衣服， 每个衣服对象创建时需要自动生成一个序号值。 要
         * 求：每个衣服的序号是不同的， 且是依次递增 1 的。
         */
        Cloth c1 = new Cloth();
        Cloth c2 = new Cloth();
        System.out.println(c1);
        System.out.println(c2);
    }
}

class Cloth {
    private static int p = 0;
    private int serialId;

    public Cloth() {
        serialId = p++;
    }

    @Override
    public String toString() {
        return "Cloth{" +
                "serialId=" + serialId +
                '}';
    }
}

class Student {
    private String name;
    private Integer age;
    // 1->男 0->女
    private Integer sex;
    private String hobby;
    private static String company = "开课吧";
    private static String subject = "Java 学科";

    public Student(String name, Integer age, Integer sex, String hobby) {
        this.name = name;
        this.age = age;
        this.sex = sex;
        this.hobby = hobby;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public Integer getSex() {
        return sex;
    }

    public void setSex(Integer sex) {
        this.sex = sex;
    }

    public String getHobby() {
        return hobby;
    }

    public void setHobby(String hobby) {
        this.hobby = hobby;
    }

    public String getCompany() {
        return company;
    }

    public String getSubject() {
        return subject;
    }

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", sex=" + sex +
                ", hobby='" + hobby + '\'' +
                ", company='" + company + '\'' +
                ", subject='" + subject + '\'' +
                '}';
    }
}

class Book {
    private String title;
    private Integer pageNum;

    public Book() {
        pageNum = 200;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public Integer getPageNum() {
        return pageNum;
    }

    public void setPageNum(Integer pageNum) {
        if (pageNum < 200) {
            System.out.println("pageNum 不能小于 200");
            return;
        }
        this.pageNum = pageNum;
    }

    public void detail() {
        System.out.println(title + " 的页数是 " + pageNum);
    }
}
